import { http } from "@/utils/http";
import type { RequestResponse } from "./types";

export const addReportApi = {
  getReportList: (data: params) => {
    return http.request<RequestResponse<PageResultReportUploadSearchVO>>(
      "post",
      "/api/v1/hdl/app/report/reportEntrySearch",
      {
        data
      }
    );
  },
  reportEntrySearchSummaryApi: (data: params) => {
    return http.request<RequestResponse<ReportUploadSearchSummaryVO>>(
      "post",
      "/api/v1/hdl/app/report/reportEntrySearchSummary",
      {
        data
      }
    );
  },
  reportBindUserId: (data: {
    /**
     * 报告所属人ID
     */
    bindUserId: number;
    /**
     * 报告ID
     */
    reportId: number;
  }) => {
    return http.request<RequestResponse<any>>(
      "post",
      "/api/v1/hdl/app/report/reportBindUserId",
      {
        data
      }
    );
  },
  download: (data: { reportId: number }) => {
    return http.request<RequestResponse<{ downloadUrls: string[] }>>(
      "post",
      "/api/v1/hdl/app/report/download",
      {
        data
      }
    );
  },
  delete: (data: { reportId: number }) => {
    return http.request<RequestResponse<any>>(
      "post",
      "/api/v1/hdl/app/report/delete",
      {
        data
      }
    );
  },
  getOperateLog: (data: OperateLogParams) => {
    return http.request<RequestResponse<OperateLogData>>(
      "post",
      "/api/v1/hdl/app/report/operateLog",
      { data }
    );
  },
  // 新增：查询操作日志明细接口
  getOperateLogDetail: (params: { operateLogId: number }) => {
    return http.request<RequestResponse<ReportOperateLogDetailVO>>(
      "get",
      "/api/v1/hdl/app/report/operateLog/detail",
      { params }
    );
  }
};
// 新增：操作日志明细响应数据类型
export interface ReportOperateLogDetailVO {
  /**
   * 操作日志ID
   */
  operateLogId?: number;
  /**
   * 操作人ID
   */
  operateId?: number;
  /**
   * 操作人姓名
   */
  operateName?: string;
  /**
   * 操作类型
   */
  operateType?: number;
  /**
   * 操作类型名称
   */
  operateTypeName?: string;
  /**
   * 操作时间
   */
  operateTime?: string;
  /**
   * 操作数据
   * operateType:10 [补充报告所属人] - ["姓名": 张三, "用户ID": "22222"]
   * operateType:11 [审核结果] - [{ "itemName" : "血压", "itemValue": "75", "itemRange": "60-80" }]
   * operateType:12 [删除报告] - null
   * operateType:13 [上传报告] - null
   */
  operateData?: any[];
  /**
   * 返回数据类型, 1:明文数据, 2:加密数据
   */
  dataType?: number;
  /**
   * 请求ID
   */
  requestId?: string;
}
// 操作日志查询参数类型
export interface OperateLogParams {
  pageNum: number; // 页码
  pageSize: number; // 每页数量
  reportName?: string; // 报告名称（可选）
  reportUserName?: string; // 报告所属人（可选）
  healthTypeId?: number; // 健康类型ID（可选）
  uploadUserName?: string; // 上传用户名（可选）
  operateTypeId?: number; // 操作类型ID（可选）
  startDate?: string; // 开始日期（可选）
  endDate?: string; // 结束日期（可选）
}

// 操作日志列表项类型
export interface OperateLogItem {
  /**
   * 操作数据
   * operateType:10 [补充报告所属人]
   * [
   * "姓名“: 张三,
   * "用户ID": "22222"
   * ]
   *
   * operateType:11 [审核结果]
   * [
   * {
   *
   * }
   * ]
   * 操作数据
   */
  operateData?: { [key: string]: any }[];
  /**
   * 操作人ID
   */
  operateId?: number;
  /**
   * 操作日志ID
   */
  operateLogId?: number;
  /**
   * 操作人姓名
   */
  operateName?: string;
  /**
   * 操作时间
   */
  operateTime?: string;
  /**
   * 操作类型
   */
  operateType?: number;
  /**
   * 操作类型名称
   */
  operateTypeName?: string;
  /**
   * 报告Id
   */
  reportId?: number;
  /**
   * 报告名称
   */
  reportName?: string;
  /**
   * 报告类型, search/condition 接口返回的 healthTypeList -> id
   */
  reportType?: number;
  /**
   * 报告用户ID
   */
  reportUserId?: number;
  /**
   * 报告用户姓名
   */
  reportUserName?: string;
  /**
   * 是否展示补充所属人信息按钮
   * true: 展示
   * false: 不展示
   * 是否展示补充按钮
   */
  showSupplementButton?: boolean;
}

/**
 * ReportOperateLogDetailVO
 */
export interface ReportOperateLogDetailVO {
  /**
   * 操作数据
   * operateType:10 [补充报告所属人]
   * [
   * "姓名“: 张三,
   * "用户ID": "22222"
   * ]
   *
   * operateType:11 [审核结果]
   * [
   * {
   * "itemName" : "血压",
   * "itemValue": "75",
   * "itemRange": "60-80",
   * }
   * ]
   *
   * operateType: 12 [删除报告]
   * operateType: 13 [上传报告]
   * operateData = null
   * 操作数据
   */
  operateData?: any[];
  /**
   * 操作人ID
   */
  operateId?: number;
  /**
   * 操作日志ID
   */
  operateLogId?: number;
  /**
   * 操作人姓名
   */
  operateName?: string;
  /**
   * 操作时间
   */
  operateTime?: string;
  /**
   * 操作类型
   */
  operateType?: number;
  /**
   * 操作类型名称
   */
  operateTypeName?: string;
}

// 操作日志查询响应数据类型
export interface OperateLogData {
  pageNum: number; // 当前页码
  pageSize: number; // 每页数量
  total: number; // 总记录数
  pages: number; // 总页数
  list: OperateLogItem[]; // 操作日志列表
  emptyFlag: boolean; // 是否为空
}
/**
 * ReportUploadSearchFrom
 */
export interface params {
  /**
   * 是否为紧急处理, 1-是，2-否
   */
  emergencyProcess?: number;
  /**
   * 结束日期,时间戳(毫秒)
   */
  endDate?: string;
  /**
   * 页码(不能为空)
   */
  pageNum: number;
  /**
   * 每页数量(不能为空)
   */
  pageSize: number;
  /**
   * 报告名称
   */
  reportName?: string;
  /**
   * 报告状态, search/condition 接口返回的 healthStatusList -> id
   */
  reportStatusId?: number;
  /**
   * 报告类型, search/condition 接口返回的 healthTypeList -> id
   */
  reportType?: number;
  /**
   * 报告所属人姓名
   */
  reportUserName?: string;
  /**
   * 开始日期, 时间戳(毫秒)
   */
  startDate?: string;
  /**
   * 上传报告人姓名
   */
  uploadUserName?: string;
}

/**
 * PageResultReportUploadSearchVO
 */
export interface PageResultReportUploadSearchVO {
  /**
   * 是否为空
   */
  emptyFlag?: boolean;
  /**
   * 结果集
   */
  list?: ReportUploadSearchVO[];
  /**
   * 当前页
   */
  pageNum?: number;
  /**
   * 总页数
   */
  pages?: number;
  /**
   * 每页的数量
   */
  pageSize?: number;
  /**
   * 总记录数
   */
  total?: number;
}

/**
 * ReportUploadSearchVO
 */
export interface ReportUploadSearchVO {
  /**
   * 紧急标志（0：非紧急，1：紧急）
   */
  emergencyFlag?: number;
  /**
   * 报告ID
   */
  reportId?: number;
  /**
   * 报告名称
   */
  reportName?: string;
  /**
   * 报告类型
   */
  reportType?: string;
  /**
   * 报告所属人Id
   */
  reportUserId?: number;
  /**
   * 报告所属人姓名
   */
  reportUserName?: string;
  /**
   * 是否展示内容审核校对(true:展示、false:不展示)
   */
  showContentReview?: boolean;
  /**
   * 是否展示删除(true:展示、false:不展示)
   */
  showDelete?: boolean;
  /**
   * 是否展示下载(true:展示、false:不展示)
   */
  showDownload?: boolean;
  /**
   * 是否展示指标审核校对(true:展示、false:不展示)
   */
  showIndicatorsReview?: boolean;
  /**
   * 是否展示补充报告人(true:展示、false:不展示)
   */
  showSupplementUser?: boolean;
  /**
   * 是否展示查看报告(true:展示、false:不展示)
   */
  showViewReport?: boolean;
  /**
   * 状态Id
   */
  status?: number;
  /**
   * 状态名称
   */
  statusName?: string;
  /**
   * 上传时间，格式 yyyy-mm-dd
   */
  uploadTime?: string;
  /**
   * 上传用户ID
   */
  uploadUserId?: number;
  /**
   * 上传用户姓名
   */
  uploadUserName?: string;
}

/**
 * ReportUploadSearchVO
 */
export interface ReportUploadSearchVO {
  /**
   * 紧急标志（0：非紧急，1：紧急）
   */
  emergencyFlag?: number;
  /**
   * 报告名称
   */
  reportName?: string;
  /**
   * 报告类型
   */
  reportType?: string;
  /**
   * 报告所属人Id
   */
  reportUserId?: number;
  /**
   * 报告所属人姓名
   */
  reportUserName?: string;
  /**
   * 状态Id
   */
  status?: number;
  /**
   * 状态名称
   */
  statusName?: string;
  /**
   * 上传时间，格式 yyyy-mm-dd
   */
  uploadTime?: string;
  /**
   * 上传用户ID
   */
  uploadUserId?: number;
  /**
   * 上传用户姓名
   */
  uploadUserName?: string;
}

export interface ReportUploadSearchSummaryVO {
  /**
   * AI分析-报告数
   */
  aIAnalyzingCount?: number;
  /**
   * 已审核-报告数
   */
  approvedCount?: number;
  /**
   * 待补充-报告数
   */
  pendingCompletionCount?: number;
  /**
   * 待校对报告内容-报告数
   */
  pendingContentReview?: number;
  /**
   * 待校对报告指标-报告数
   */
  pendingIndicatorsReview?: number;
  /**
   * 全部-报告数
   */
  totalCount?: number;
}
